package com.wechat.controller;

import com.wechat.annotation.GlobalInterceptor;
import com.wechat.entity.po.UserInfoBeauty;
import com.wechat.entity.query.UserInfoBeautyQuery;
import com.wechat.entity.vo.PaginationResultVO;
import com.wechat.entity.vo.ResponseVO;
import com.wechat.service.UserInfoBeautyService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

@RestController("adminUserBeautyInfoController")
@RequestMapping("/admin")
public class AdminUserBeautyInfoController extends ABaseController{
    @Resource
    UserInfoBeautyService userInfoBeautyService;

    /**
     * 加载靓号用户列表---分页查询-URL查询参数
     * @param beautyQuery
     * @return
     */
    @GetMapping("/loadBeautyAccountList")
    @GlobalInterceptor(checkAdmin = true)
    public ResponseVO loadBeautyAccountList(UserInfoBeautyQuery beautyQuery) {//这里不需要@RequestBody注解，因为参数是URL查询参数，Spring MVC 会将传过来的参数绑定到对象属性上
        beautyQuery.setOrderBy("id desc");
        PaginationResultVO resultVO = userInfoBeautyService.findListByPage(beautyQuery);
        return getSuccessResponseVO(resultVO);
    }


    /**
     * 保存(修改/新增)用户靓号信息
     * @param beauty
     * @return
     */
    @RequestMapping("/saveBeautyAccount")
    @GlobalInterceptor(checkAdmin = true)
    /*
    细节：Spring MVC 会将传过来的参数绑定到对象属性上。
// 前端表单提交（不包含 id 字段）
POST /admin/saveBeautyAccount
userId=U123456&email=test@example.com&status=0

// 后端接收到的 UserInfoBeauty 对象
UserInfoBeauty beauty = new UserInfoBeauty();
beauty.setUserId("U123456");
beauty.setEmail("test@example.com");
beauty.setStatus(0);
beauty.setId(null); // id 为 null，因为是新增记录
     */
    public ResponseVO saveBeautyAccount(UserInfoBeauty beauty) {
        userInfoBeautyService.saveAccount(beauty);
        return getServerErrorResponseVO(null);
    }

    /**
     * 删除用户靓号信息
     * @param id
     * @return
     */
    @RequestMapping("/delBeautyAccount")
    @GlobalInterceptor(checkAdmin = true)
    public ResponseVO delBeautyAccount(@NotNull Integer id) {
        userInfoBeautyService.deleteUserInfoBeautyById(id);
        return getServerErrorResponseVO(null);
    }




}
